import instance from './axios';

export const BASE_URL =
  process.env.NEXT_PUBLIC_NOF1_API_BASE_URL || "https://nof1.ai/api";

export async function fetcher<T = unknown>(
  url: string,
  init?: RequestInit,
): Promise<T> {
  try {
    // 创建axios配置对象，添加headers和timeout设置
    const axiosConfig: any = {
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
      },
      timeout: 10000, // 10秒超时
    };
    
    console.log('axios请求完整路径:', url);
    
    // 直接使用完整的URL，确保URL中的查询参数不被覆盖
    // 注意：axios.ts中的响应拦截器已经返回response.data，所以这里直接使用response
    const response = await instance.get<T>(url, axiosConfig);
    
    console.log('axios响应数据:', response);
    
    // 直接返回整个响应对象，因为 axios.ts 中的响应拦截器已经处理了 response.data
    return response;
  } catch (error: any) {
    // 更详细的错误处理
    console.error('API请求错误:', error);
    
    if (error.response) {
      // 服务器返回错误状态码
      const text = error.response.data?.toString() || error.response.statusText || '';
      throw new Error(`请求失败 ${error.response.status}: ${text}`);
    } else if (error.request) {
      // 请求已发出但没有收到响应
      throw new Error(`网络错误: 未收到响应`);
    } else {
      // 其他错误
      throw new Error(`请求错误: ${error.message || '未知错误'}`);
    }
  }
}

export const apiUrl = (path: string) => `${BASE_URL}${path}`;
